package com.cg.asm.body.dao.user;

import com.cg.asm.body.domain.dto.user.UserGroupDTO;
import com.cg.asm.body.domain.dto.user.UserGroupRoleDTO;
import com.cg.asm.body.domain.vo.user.UserGroupVO;
import com.cg.asm.client.exception.MybatisExample;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface UserGroupMapper {

    /**
     * 获取用户分组数据集
     * @return
     */
    List<UserGroupVO> getUserGroupList();

    /**
     * 查询用户分组信息（分页）
     *
     * @param mybatisExample
     * @return
     */
    List<UserGroupVO> selectByUserGroup(MybatisExample mybatisExample);

    /**
     * 保存用户分组信息
     * @param userGroupDTO
     */
    void saveUserGroup(UserGroupDTO userGroupDTO);

    /**
     * 更新用户分组信息
     * @param userGroupId
     * @param userGroupName
     */
    void updateUserGroup(@Param("userGroupId") String userGroupId,@Param("userGroupName") String userGroupName);

    /**
     * 删除用户分组信息
     * @param userGroupId
     */
    void delUserGroup(String userGroupId);

    /**
     * 根据用户分组Id删除用户分组角色信息
     * @param userGroupId
     */
    void delUserGroupRole(String userGroupId);

    /**
     * 保存用户分组角色信息
     * @param userGroupRoleDTO
     */
    void saveUserGroupRole(UserGroupRoleDTO userGroupRoleDTO);

    /**
     * 根据用户分组编码查询角色信息
     * @param userGroupId
     * @return
     */
    List<String> roleByUserGroup(@Param("userGroupId") String userGroupId);

    /**
     * 根据角色数据集删除用户分组关联角色数据
     * @param roleIds
     */
    void delUserGroupRoleByRoleId(String[] roleIds);
}
